123. Best Time to Buy and Sell Stock III - LeetCode Solution


Dynamic Programming

Python Code:

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        if not prices:
            return 0
        
        
        max = 0
        curr = prices[-1]
        
        for i in range(len(prices)-2,-1,-1):
            if prices[i]>=curr:
                curr = prices[i]
                
            else:
                mn = prices[0]
                mx = 0
                
                for j in prices[0:i]:
                    if mn>j:
                        mn = j
                    elif j-mn>mx:
                        mx = j-mn
                        
                profit = curr-prices[i] + mx
                if max<profit:
                    max = profit

        return max
        


Comments

Submit
0 Comments
More Questions

1538B - Friends and Candies
580A - Kefa and First Steps
1038B - Non-Coprime Partition
43A - Football
50A - Domino piling
479A - Expression
1480A - Yet Another String Game
1216C - White Sheet
1648A - Weird Sum
427A - Police Recruits
535A - Tavas and Nafas
581A - Vasya the Hipster
1537B - Bad Boy
1406B - Maximum Product
507B - Amr and Pins
379A - New Year Candles
1154A - Restoring Three Numbers
750A - New Year and Hurry
705A - Hulk
492B - Vanya and Lanterns
1374C - Move Brackets
1476A - K-divisible Sum
1333A - Little Artem
432D - Prefixes and Suffixes
486A - Calculating Function
1373B - 01 Game
1187A - Stickers and Toys
313B - Ilya and Queries
579A - Raising Bacteria
723A - The New Year Meeting Friends